package com.handpay.framework.swiper;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Created by jmshuai on 2014/9/15.
 * 统一记录刷卡器一次业务的结果。譬如，余额查询、卡卡转账、超级转账
 * 包括磁条和IC。暂时只在刷卡器内部处理，对外面业务透明。
 * 由于时间原因，暂时只用于Bbpos的刷卡器，后期有时间可以推广用于其他刷卡器
 */
class SwipeTransData implements Parcelable{
    /**
     * 时间因子。mFactor可以用于，判断是不是一个trans。
     */
    public String mFactor;
    /**
     * 账号明文
     */
    public String mPAN;
    /**
     * 账号密文
     */
    public String mEncAN;
    /**
     * 密码密文
     */
    public String mPIN;
    /**
     * IC卡交易，用户选择的ApplicationName
     */
    public String mICSelectedApplication;
    /**
     * IC卡交易，icNum
     */
    public String mICNum;
    /**
     * IC卡交易，判断dcData。可以通过这个来判断是不是IC卡交易
     */
    public String mDCData;
    /**
     * bbpos ic交易的时候，onlineProcess里，需要最后调用的index
     */
    public int mBbposICTranIndex;
    /**
     * 超时时间
     */
    public int mTimeout;
    /**
     * 标志是不是ic交易。默认不是
     */
    public boolean isIcTrans = false;
    protected SwipeTransData(){

    }

    protected SwipeTransData(Parcel in) {
        mFactor = in.readString();
        mPAN = in.readString();
        mEncAN = in.readString();
        mPIN = in.readString();
        mICSelectedApplication = in.readString();
        mICNum = in.readString();
        mDCData = in.readString();
        mBbposICTranIndex = in.readInt();
        mTimeout = in.readInt();
        isIcTrans = in.readByte() != 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(mFactor);
        dest.writeString(mPAN);
        dest.writeString(mEncAN);
        dest.writeString(mPIN);
        dest.writeString(mICSelectedApplication);
        dest.writeString(mICNum);
        dest.writeString(mDCData);
        dest.writeInt(mBbposICTranIndex);
        dest.writeInt(mTimeout);
        dest.writeByte((byte) (isIcTrans ? 1 : 0));
    }

    @Override
    public int describeContents() {
        return 0;
    }

    public static final Creator<SwipeTransData> CREATOR = new Creator<SwipeTransData>() {
        @Override
        public SwipeTransData createFromParcel(Parcel in) {
            return new SwipeTransData(in);
        }

        @Override
        public SwipeTransData[] newArray(int size) {
            return new SwipeTransData[size];
        }
    };
}
